{# How a request reaches the app through each of its routers, then the entrypoints Traefik listens on. Traefik's own routers (its API and dashboard) are not drawn. A middleware that does nothing in effect (an allowlist open to everyone) is marked amber. #} {% from "components/macros/layout.html" import card, stats_strip, facts %} {% from "components/macros/feedback.html" import empty_state %} {% if error %}{% include "pages/overseer/ingress/_error.html" %}{% else %}
{{ stats_strip(figures, id="ingress-figures") }} {% call card("Request flow", "Entrypoint to server") %}
{% for flow in flows %}

{{ flow.name }}

    {% for step in flow.steps %}
  1. {{ step.detail }}

    {{ step.label }}

    {% if not loop.last %}{% endif %}
  2. {% endfor %}
{% else %} {{ empty_state("No app routers", "Add traefik.* labels to a compose service to route traffic to it.") }} {% endfor %}
{% endcall %} {% call card("Entrypoints") %}{{ facts(entrypoints) }}{% endcall %}
{% endif %}